package com.xyx.jdbc;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class SimplePlant {
	/**
	 * 简单工厂模式：获取一个指定Class的实例对象
	 * @param clazz
	 * @return
	 */
	public static <T> T getInstance(Class<T> clazz) {
		T t=null;
		try {
			t=clazz.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		return t;
	}
	public static  List<Map<String,Object>> changeType(ResultSet rs){
		List<Map<String,Object>> list=new ArrayList();
		// 因为已经遍历过一次结果，所有再次遍历之前，需要将光标移动到最前位置（第一行之前）
		try {
			rs.beforeFirst();
			// 获取结果集中的所有的列的信息
			ResultSetMetaData rsmd = rs.getMetaData();
			// 获取结果集中列的个数
			int colCount = rsmd.getColumnCount();
			while(rs.next()) {
				LinkedHashMap<String,Object> map=new LinkedHashMap();
				for(int i=1;i<=colCount;i++) {
					//通过下标获取每行的每个字段名
					String strKey=rsmd.getColumnName(i);
					//将获取到当前行的当前字段列存入到map集合当中
					map.put(strKey,rs.getObject(strKey));
				}
				//将存有当前行的对象存入到list集合当中
				list.add(map);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
}
